#include <types.h>
#include <kernel/system.h>
#include <kernel/initcall.h>
#include <drivers/irq.h>
#include <drivers/gpio.h>
#include <kernel/syslog.h>
#include <kernel/kobject.h>
#include <irqnum.h>
#include <drivers/uart.h>
#include <string.h>
#include <kernel/shell.h>
#include <stdio.h>
#include <kernel/fdt.h>


static void delay(int delay)
{
    for(volatile int i = 0; i<delay; i++)
        for(volatile int j=0;j<1000;j++);
}


void test_exit_handler(void *data)
{
    // irq_clear_flag(IO_PA0);
    // SYSLOG_INFO("test_exit_handler!\n");
    // gpio_toggle_value(IO_PC13);
}


extern uint8_t data[9];
int main(void)
{
    int ret = gpio_request(IO_PC13);
    if(ret) {
        return 0;
    }

    gpio_direction_output(IO_PC13, IO_LOW);
    // gpio_set_value(IO_PC13, 0);

    // ret = gpio_request(IO_PA0);
    // if(ret) {
    //     return 0;
    // }

    // ret = gpio_request(IO_PA4);
    // if(ret) {
    //     return 0;
    // }

    // gpio_direction_output(IO_PA4, IO_LOW);

    // int irq = gpio_to_irq(IO_PA0, IRQF_RISING);
    // irq_request(irq, test_exit_handler, NULL);
    // irq_enable(irq);
    
    while(1) {
        //gpio_set_value(IO_PC13, 0);
        shell_loop();
        // gpio_toggle_value(IO_PC13);
        // delay(1000);
        // gpio_set_value(IO_PC13, 1);
        // delay(1000);
    }
    return 0;
}
